<?php

/**
 * 中国网建 短信接口：支持下发短信（支持群发），可用于 找回密码，短信告警，发送活动通知等
 * http://sms.webchinese.cn/default.shtml
 *
 */
class SMS_WebChinese extends SMS_Abstract {

	/**
	 * 帐号
	 *
	 **/
	private $_account = '';

	/**
	 * 密钥
	 *
	 **/
	private $_seckey = '';

	/**
	 * 发送错误代码
	 *
	 **/
	private static $_sendError = array(
			-1 => '没有该用户账户',
			-2 => '密钥不正确（不是用户密码）',
			-3 => '短信数量不足',
			-4 => '手机号格式不正确',
			-11 => '该用户被禁用',
			-14 => '短信内容出现非法字符',
			-41 => '手机号码为空',
			-42 => '短信内容为空',
	);

    /**
     * 构造函数
     * @param <type> $option
     */
    public function  __construct($option = array()) {

		if (isset($option['account'])) {
			$this->setAccount($option['account'], $option['seckey']);
		}

		parent::__construct($option);
    }

	/**
	 * 设置帐号
     * @param <type> $account
     * @param <type> $seckey
	 **/
	public function setAccount($account, $seckey) {

		$this->_account = $account;
		$this->_seckey = $seckey;
	}

    /**
     * 发送短信
     * @param <type> $mobile 接收手机号（可以为数组）
     * @param <type> $content
	 *
	 * @return 发送成功条数
     */
    public function send($mobile, $content) {

		if (is_array($mobile)) {
			$mobile = implode(',', $mobile);
		}
		$url = 'http://utf8.sms.webchinese.cn/?Uid='.$this->_account
				.'&Key='.$this->_seckey.'&smsMob='.$mobile.'&smsText='
				.urlencode($content);

		$res = $this->_send($url);
		if ($res < 0) {
			$msg = '未知的错误';
			if (isset(self::$_sendError[$res])) {
				$msg = self::$_sendError[$res];
			}
			throw new SMS_Exception($msg, SMS_Exception::E_SMS_SEND_ERROR);
		}

		return $res;
	}

	/**
	 * 发送请求
	 *
     * @param <type> $url
	 **/
	public function _send($url) {

		return file_get_contents($url);
	}
}